var { verifyToken } = require("../tool/token.js");

// 中间件函数
function validateField(key, method = "get") {

    return function (req, res, next) {
        let data = method == "get" ? req.query : req.body;

        if (Object.hasOwn(data, key)) {  // 存在此字段
            next();
        } else {
            res.send({
                code: 100,
                message: "请传入完整参数:" + key,
            })
        }
    }

}


// 从cookie中获取token和解析token
function validateTokenCookie(req, res, next) {
    // console.log(req.headers); // 请求头
    // console.log(req.headers.cookie); // 请求头=>cookie => 自己解析

    // 使用cookie-parser插件 解析后
    console.log(req.cookies);

    var { token } = req.cookies;

    if (token) {
        if (verifyToken(token)) {
            console.log("token解析成功");
            next();
        } else {
            res.send({
                code: 100,
                message: "token过期或失效",
            })
        }
    } else {
        res.send({
            code: 100,
            message: "非法访问!",
        })
    }
}


// 从请求头中获取token和解析token
function validateTokenHeader(req, res, next) {
    // console.log(req.headers); // 请求头

    var { token } = req.headers;

    if (token) {
        if (verifyToken(token)) {
            console.log("token解析成功");
            next();
        } else {
            res.send({
                code: 100,
                message: "token过期或失效",
            })
        }
    } else {
        res.send({
            code: 100,
            message: "非法访问!",
        })
    }
}



module.exports = {
    validateField,
    validateTokenCookie,
    validateTokenHeader

}